#!/bin/sh
# 自动读取并解析 CPU 功耗墙 (MSR 0x610) 的脚本
# 适用于已安装 msr-tools 的 Linux/OpenWrt

CPU=0   # 默认读取 CPU0，你可以改成 -p 1 等

# 读取功率单位
PU=$(./rdmsr -x -f 3:0 0x606)
UNIT=$(echo "scale=5; 1 / (2^$PU)" | bc -l)

# 读取 PL1 原始值
PL1_RAW=$(./rdmsr -x -f 14:0 0x610 -p $CPU)
PL1_ENABLE=$(./rdmsr -x -f 15:15 0x610 -p $CPU)
PL1_TIME=$(./rdmsr -x -f 23:17 0x610 -p $CPU)

# 读取 PL2 原始值
PL2_RAW=$(./rdmsr -x -f 46:32 0x610 -p $CPU)
PL2_ENABLE=$(./rdmsr -x -f 47:47 0x610 -p $CPU)
PL2_TIME=$(./rdmsr -x -f 55:49 0x610 -p $CPU)

# 换算瓦数
PL1_WATT=$(echo "scale=2; $PL1_RAW * $UNIT" | bc -l)
PL2_WATT=$(echo "scale=2; $PL2_RAW * $UNIT" | bc -l)

echo "================ CPU 功耗墙信息 (Core $CPU) ================"
echo "功率单位: 2^(-$PU) = $UNIT W"
echo "PL1: $PL1_WATT W (原始值=$PL1_RAW, 启用=$PL1_ENABLE, 时间窗口字段=$PL1_TIME)"
echo "PL2: $PL2_WATT W (原始值=$PL2_RAW, 启用=$PL2_ENABLE, 时间窗口字段=$PL2_TIME)"
echo "==========================================================="
